package com.chaike.hsq.bean.response.merchant;

import com.chaike.hsq.bean.response.BizBaseResponse;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

/**
 * 慧收钱 商户进件通知回调 业务参数解析结果.
 *
 * @author Luo
 * @version 1.0
 * @date 2021-10-14 10:36
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MerchantIncomingNotifyResponse extends BizBaseResponse implements Serializable {

    private static final long serialVersionUID = 5190642453439420460L;

    /**
     * <pre>
     * 字段名：终端商户号.
     * 变量名：merchantNo
     * 是否必填：否
     * 类型：string[1,32]
     * 描述：
     *    平台（慧收钱）生成商户编号
     * </pre>
     */
    private String merchantNo;

    /**
     * <pre>
     * 字段名：进件请求流水号.
     * 变量名：transNo
     * 是否必填：否
     * 类型：string[1,32]
     * 描述：
     *    商户请求进件唯一流水号，每次请求不可重复
     * </pre>
     */
    private String transNo;

    /**
     * <pre>
     * 字段名：状态.
     * 变量名：status
     * 是否必填：是
     * 类型：string[1,32]
     * 描述：
     *    详见附录：[状态]
     * </pre>
     *
     * @see com.chaike.hsq.consts.HsqMerchantEnum.Status
     */
    private String status;

    /**
     * <pre>
     * 字段名：进件申请编号.
     * 变量名：applyNo
     * 是否必填：否
     * 类型：string[1,64]
     * 描述：
     *    平台（慧收钱）生成进件申请编号
     * </pre>
     */
    private String applyNo;

    /**
     * <pre>
     * 字段名：商户全称.
     * 变量名：merchantName
     * 是否必填：是
     * 类型：string
     * 描述：
     *
     * </pre>
     */
    private String merchantName;

    /**
     * <pre>
     * 字段名：商户简称.
     * 变量名：merchantShortName
     * 是否必填：是
     * 类型：string
     * 描述：
     *
     * </pre>
     */
    private String merchantShortName;

    /**
     * <pre>
     * 字段名：平台公钥.
     * 变量名：platformPublicKey
     * 是否必填：否
     * 类型：string
     * 描述：
     *
     * </pre>
     */
    private String platformPublicKey;

    /**
     * <pre>
     * 字段名：签名key.
     * 变量名：secureKey
     * 是否必填：否
     * 类型：string
     * 描述：
     *
     * </pre>
     */
    private String secureKey;

    /**
     * <pre>
     * 字段名：进件结果集合.
     * 变量名：memo
     * 是否必填：是
     * 类型：string
     * 描述：
     *    JSON集合
     * </pre>
     */
    private List<Result> resultList;

    /**
     * 进件结果.
     */
    @Data
    @Accessors(chain = true)
    @EqualsAndHashCode(callSuper = true)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Result extends BizBaseResponse implements Serializable {

        private static final long serialVersionUID = 9174668613903300598L;

        /**
         * <pre>
         * 字段名：流水号.
         * 变量名：seqNo
         * 是否必填：是
         * 类型：string
         * 描述：
         *    平台（慧收钱）生成报备流水号
         * </pre>
         */
        private String seqNo;

        /**
         * <pre>
         * 字段名：业务类型.
         * 变量名：businessType
         * 是否必填：是
         * 类型：string
         * 描述：
         *    1：平台商户、2：微信smid、3：支付宝smid、4：账户、5：慧收钱协议状态、6：渠道协议状态
         * </pre>
         */
        private String businessType;

        /**
         * <pre>
         * 字段名：申请状态.
         * 变量名：applyStatus
         * 是否必填：是
         * 类型：string
         * 描述：
         *    详见附录：[申请状态]
         * </pre>
         *
         * @see com.chaike.hsq.consts.HsqMerchantEnum.ApplyStatus
         */
        private String applyStatus;

        /**
         * <pre>
         * 字段名：渠道商户号.
         * 变量名：channelMerchantNo
         * 是否必填：否
         * 类型：string
         * 描述：
         *    开通成功后返回
         * </pre>
         */
        private String channelMerchantNo;

        /**
         * <pre>
         * 字段名：终端用户IP.
         * 变量名：spbillCreateIp
         * 是否必填：是
         * 类型：string[1,32]
         * 描述：
         *    消费者端IP，支持ipv4、ipv6格式
         * 示例值：123.12.12.123
         * </pre>
         */
        private String spbillCreateIp;

    }

}
